/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package listElement;

/**
 *
 * @author boomar
 */
public class ListElement<E> {

    /**
     *
     * Attributs de la classe ListElement<E>
     * un attribut referencant l'element concret stocke
     * un referencant le ListElement<E> suivant,
     * un referencant le precedent,
     * un attribut qui indique la position de ce ListElement<E> dans la liste.
     */
    private E element;
    private ListElement next;
    private ListElement previous;
    private int index;

    public ListElement(E element) {
        this.element = element;
        this.next = null;
        this.previous = null;
        this.index = 0;
    }

    public ListElement(E element, ListElement previous, ListElement next, int position) {
        this.element = element;
        this.next = next;
        this.previous = previous;
        this.index = position;
    }

    public ListElement() {
    }

    /**
     * E getElement()
     * @return l'element stocke dans la structure.
     */
    E getElement() {
        return element;
    }

    /**
     * @return la structure suivante, null s'il n'y en a pas.
     */
    ListElement<E> getNext() {
        return next == null ? null : next;
    }

    /**
     * @return l'element precedent de l'element courant.
     */
    ListElement<E> getPrevious() {
        return previous == null ? null : previous;
    }

    /**
     * @return la position de ce ListElement<E> dans la liste.
     */
    int getPosition() {
        return index;
    }

    /**
     * Positionne l'element dans la structure
     */
    void setElement(E element) {
        this.element = element;
    }

    /**
     * Positionne l'element specifie comme le suivant de l'element courant.
     */
    void setNext(ListElement<E> element) {
        this.next = element;
    }

    /**
     * Positionne l'element specife comme le precedent de l'element courant.
     */
    void setPrevious(ListElement previous) {
        this.previous = previous;
    }

    /**
     * Ecrit la position de ce ListElement<E> la liste.
     */
    void setPosition(int index) {
        this.index = index;
    }
}
